1
|
|
|
const Constant = require('../../libraries/constant') |
|
|
|
|
2
|
|
|
const Moment = require('moment') |
3
|
|
|
const Redis = require('../../../config/db').redis |
4
|
|
|
const ModelStatisticsStore = require('../../../app/model/mist/statisticsStore') |
5
|
|
|
|
6
|
|
|
var INSERT_PER_TIMES = 1000 |
7
|
|
|
|
8
|
|
|
var statistics = async function () { |
|
|
|
|
9
|
|
|
let accessDate = Moment().subtract(1, 'days').format('YYYY-MM-DD') |
10
|
|
|
let statisticsDay = Moment().subtract(1, 'days').format('YYYYMMDD') |
11
|
|
|
// let accessDate = Moment().format('YYYY-MM-DD') |
12
|
|
|
// let statisticsDay = Moment().format('YYYYMMDD') |
13
|
|
|
let uvCachePrefix = 'MIST:ST_UV:DATE:' + statisticsDay + ':STORE_ID:' |
14
|
|
|
let pvCacheKey = 'MIST:ST_PV:DATE:' + statisticsDay |
15
|
|
|
|
16
|
|
|
// 根据storeID前缀 1-9 |
17
|
|
|
let keywords |
18
|
|
|
let uvKeys |
19
|
|
|
|
20
|
|
|
// insert update data |
21
|
|
|
let insertData = [] |
22
|
|
|
|
23
|
|
|
for (let index = 1; index < 10; index++) { |
24
|
|
|
keywords = uvCachePrefix + index.toString() + '*' |
25
|
|
|
uvKeys = await Redis.keys(keywords) |
|
|
|
|
26
|
|
|
for (let i = 0; i < uvKeys.length; i++) { |
27
|
|
|
element = uvKeys[i] |
|
|
|
|
28
|
|
|
let storeId = element.replace(uvCachePrefix, '') |
29
|
|
|
|
30
|
|
|
let tmpUv = await Redis.bitcount(element) |
31
|
|
|
let tmpPv = await Redis.hget(pvCacheKey, storeId) |
32
|
|
|
|
33
|
|
|
let tmp = { |
34
|
|
|
store_id: storeId, |
35
|
|
|
access_date: accessDate, |
36
|
|
|
pv: tmpPv, |
37
|
|
|
uv: tmpUv, |
38
|
|
|
} |
39
|
|
|
// console.log(tmp) |
40
|
|
|
// console.log('---------------------------') |
41
|
|
|
|
42
|
|
|
insertData.push(tmp) |
43
|
|
|
// 每1000条插入一次 |
44
|
|
|
if (insertData.length >= INSERT_PER_TIMES) { |
45
|
|
|
console.log('---- insert DB ---- count: ' + insertData.length) |
|
|
|
|
46
|
|
|
ModelStatisticsStore.add(insertData) |
47
|
|
|
insertData.length = 0 |
48
|
|
|
} |
49
|
|
|
|
50
|
|
|
} |
51
|
|
|
} |
52
|
|
|
|
53
|
|
|
if (insertData.length > 0) { |
54
|
|
|
console.log('---- last insert DB ---- count: ' + insertData.length) |
55
|
|
|
await ModelStatisticsStore.add(insertData) |
56
|
|
|
} |
57
|
|
|
|
58
|
|
|
// update total |
59
|
|
|
await ModelStatisticsStore.updateStatisticsTotal(accessDate) |
60
|
|
|
console.log('ok statistics.js ' + Moment().format('YYYYMMDD HH:mm:ss')) |
61
|
|
|
} |
62
|
|
|
|
63
|
|
|
module.exports = statistics |